/**
 * 数据库迁移脚本：将日期字段从DATE改为VARCHAR(20)
 * 用途：支持多种日期精度（YYYY、YYYY-MM、YYYY-MM-DD）
 * 
 * 使用方法：node src/scripts/migrateDateFields.js
 */

const { pool } = require('../config/db');

async function migrateDateFields() {
  try {
    console.log('开始迁移日期字段类型...\n');

    // 1. 修改 birth_date 字段
    console.log('1. 修改 birth_date 字段类型 (DATE -> VARCHAR(20))...');
    await pool.execute(`
      ALTER TABLE processed_personnel 
      MODIFY COLUMN birth_date VARCHAR(20) 
      COMMENT '出生日期（支持多种精度：YYYY、YYYY-MM、YYYY-MM-DD）'
    `);
    console.log('✓ birth_date 字段迁移完成');

    // 2. 修改 position_start_date 字段
    console.log('2. 修改 position_start_date 字段类型 (DATE -> VARCHAR(20))...');
    await pool.execute(`
      ALTER TABLE processed_personnel 
      MODIFY COLUMN position_start_date VARCHAR(20) 
      COMMENT '任职日期（支持多种精度：YYYY、YYYY-MM、YYYY-MM-DD）'
    `);
    console.log('✓ position_start_date 字段迁移完成');

    console.log('\n✅ 所有字段迁移成功！');
    console.log('\n字段变更说明：');
    console.log('- birth_date: DATE -> VARCHAR(20)');
    console.log('- position_start_date: DATE -> VARCHAR(20)');
    console.log('\n现在支持以下日期精度：');
    console.log('- 只有年份: 1979');
    console.log('- 年月: 1979-06');
    console.log('- 完整日期: 1979-06-15');

    process.exit(0);
  } catch (error) {
    console.error('\n❌ 迁移失败:', error.message);
    
    if (error.message.includes('Unknown column')) {
      console.log('\n提示：如果是新数据库，可能不需要运行此迁移脚本。');
      console.log('请直接使用 src/config/database.sql 创建表结构。');
    } else if (error.message.includes('Duplicate column name')) {
      console.log('\n提示：字段可能已经存在，迁移可能已经完成。');
    } else {
      console.log('\n请检查：');
      console.log('1. 数据库连接是否正常');
      console.log('2. 表 processed_personnel 是否存在');
      console.log('3. 是否有足够的权限修改表结构');
    }
    
    process.exit(1);
  }
}

// 运行迁移
migrateDateFields();

